﻿<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" indent="yes" encoding="utf-8" omit-xml-declaration="yes" />
  <!--
  -->
  <xsl:strip-space elements="*" />
  <xsl:preserve-space elements="text" />

  <xsl:template match="precode">
    <xsl:value-of select="." />
  </xsl:template>

  <xsl:template match="control" xml:space="default">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render!='false'">
      <xsl:choose>
        <xsl:when test="@isInContainer='true'"></xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="@name" />
          <xsl:text>=</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:choose>
        <xsl:when test="@xtype!=''">
          <xsl:text>{</xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>new </xsl:text>
          <xsl:value-of select="@type" />
          <xsl:text>({</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:if test="@type='Ext.grid.GridPanel' or @type='Ext.grid.EditorGridPanel'">
        <xsl:text>ds:</xsl:text>
        <xsl:choose>
          <xsl:when test="@customStore='true'">
            <xsl:text>Ext.StoreMgr.get('</xsl:text>
            <xsl:value-of select="@storeName"/>
            <xsl:text>')</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:call-template name="GridStore" />
          </xsl:otherwise>
        </xsl:choose>
        <xsl:text>,cm:</xsl:text>
        <xsl:call-template name="GridColumnModel" >
          <xsl:with-param name="useExpander" select="options//@useRowExpander" />
          <xsl:with-param name="gridId" select="@id" />
        </xsl:call-template>
        <xsl:text>,sm:new Ext.grid.</xsl:text>
        <xsl:value-of select="@SelectionModel" />
        <xsl:text>({listeners:{</xsl:text>
        <xsl:apply-templates select="selectionModel/events//*" />
        <xsl:text>}})</xsl:text>
        <xsl:text>,view:new Ext.grid.</xsl:text>
        <xsl:value-of select="@viewTypeName" />
        <xsl:text>({</xsl:text>
        <xsl:apply-templates select="view//@*" />
        <xsl:text>}),</xsl:text>
        <xsl:if test="@remoteLoad='true'">
          <xsl:text>bbar:new Ext.PagingToolbar({pageSize:</xsl:text>
          <xsl:value-of select="@pageSize" />
          <xsl:text>,store:Ext.StoreMgr.get('</xsl:text>
          <xsl:choose>
            <xsl:when test="@customStore='true'">
              <xsl:value-of select="@storeName"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:text>_store_</xsl:text>
              <xsl:value-of select="@id" />
            </xsl:otherwise>
          </xsl:choose>
          <xsl:text>'),displayInfo:true}),</xsl:text>
        </xsl:if>
      </xsl:if>
      <xsl:apply-templates select="options//@*" />
      <xsl:if test="@type='Ext.data.DirectStore' or @type='Ext.data.ArrayStore'">
        <xsl:text>,</xsl:text>
        <xsl:call-template name="StoreColumnModel" />
      </xsl:if>
      <xsl:if test="count(styles//@*) > 0">
        <xsl:if test="count(options//@*) > 0">,</xsl:if>
        <xsl:text>style:{</xsl:text>
        <xsl:apply-templates select="styles//@*" />
        <xsl:text>}</xsl:text>
      </xsl:if>
      <xsl:if test="@hasTBar='true'">
        <xsl:if test="count(./controls/tbar/*) > 0">
          <xsl:if test="count(options//@*) > 0">,</xsl:if>
          <xsl:text>tbar:</xsl:text>
          <xsl:apply-templates select="./controls/tbar/control">
            <xsl:sort select="@idx" data-type="number" order="ascending" />
          </xsl:apply-templates>
        </xsl:if>
      </xsl:if>
      <xsl:if test="@hasbBar='true'">
        <xsl:if test="count(./controls/bbar/*) > 0">
          <xsl:if test="count(options//@*) > 0">,</xsl:if>
          <xsl:text>bbar:</xsl:text>
          <xsl:apply-templates select="./controls/bbar/control">
            <xsl:sort select="@idx" data-type="number" order="ascending" />
          </xsl:apply-templates>
        </xsl:if>
      </xsl:if>
      <xsl:if test="@isContainer='true'">
        <xsl:if test="count(./controls/*) > 0">
          <xsl:if test="count(options//@*) > 0">,</xsl:if>
          <xsl:if test="@hasItems='true'">
            <xsl:text>menu:{</xsl:text>
          </xsl:if>
          <xsl:text>items:[</xsl:text>
          <xsl:apply-templates select="./controls/control">
            <xsl:sort select="@y" data-type="number" order="ascending" />
            <xsl:sort select="@x" data-type="number" order="ascending" />
            <xsl:sort select="@idx" data-type="number" order="ascending" />
          </xsl:apply-templates>
          <xsl:text>]</xsl:text>
          <xsl:if test="@hasItems='true'">
            <xsl:text>}</xsl:text>
          </xsl:if>
        </xsl:if>
        <xsl:if test="count(buttons/*) > 0">
          <xsl:text>,buttons:[</xsl:text>
          <xsl:apply-templates select="buttons/*">
            <xsl:sort select="@y" data-type="number" order="ascending" />
            <xsl:sort select="@x" data-type="number" order="ascending" />
            <xsl:sort select="@idx" data-type="number" order="ascending" />
          </xsl:apply-templates>
          <xsl:text>]</xsl:text>
        </xsl:if>
      </xsl:if>
      <xsl:if test="count(layoutConfig//@*) > 0">
        <xsl:text>,layoutConfig:{</xsl:text>
        <xsl:apply-templates select="layoutConfig//@*" />
        <xsl:text>}</xsl:text>
      </xsl:if>
      <xsl:if test="count(./events/*) > 0">
        <xsl:text>,listeners:{</xsl:text>
        <xsl:apply-templates select="events" />
        <xsl:text>}</xsl:text>
      </xsl:if>
      <xsl:choose>
        <xsl:when test="@xtype!=''">
          <xsl:text>}</xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>})</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:choose>
        <xsl:when test="@isInContainer='true'">
          <xsl:if test="not(position()=last())">,</xsl:if>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>;</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:if>
    <xsl:if test="@render='false'">
      <xsl:if test="@type='Ext.grid.GridPanel' or @type='Ext.grid.EditorGridPanel'">
        <xsl:if test="@reconfigure='true'">
          <xsl:text>Ext.getCmp('</xsl:text>
          <xsl:value-of select="@id" />
          <xsl:text>').reconfigure(</xsl:text>
          <xsl:call-template name="GridStore" />
          <xsl:text>,</xsl:text>
          <xsl:call-template name="GridColumnModel" >
            <xsl:with-param name="useExpander" select="options//@useRowExpander" />
            <xsl:with-param name="gridId" select="@id" />
          </xsl:call-template>
          <xsl:text>);</xsl:text>
        </xsl:if>
        <xsl:choose>
          <xsl:when test="@remoteLoad='true'">
            <xsl:choose>
              <xsl:when test="griddata/@totalCount != '0'">
                <xsl:text>{totalCount:</xsl:text>
                <xsl:value-of select="griddata/@totalCount" />
                <xsl:text>,results:[</xsl:text>
                <xsl:apply-templates select="griddata" mode="JSONdata">
                  <xsl:with-param name="totalCount" select="griddata/@totalCount" />
                </xsl:apply-templates>
                <xsl:text>]}</xsl:text>
              </xsl:when>
              <xsl:otherwise>
                <xsl:text>{totalCount:0,results:[]}</xsl:text>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:when>
          <xsl:otherwise>
            <xsl:if test="griddata/@totalCount != '0'">
              <xsl:text>Ext.getCmp('</xsl:text>
              <xsl:value-of select="@id" />
              <xsl:text>').store.loadData([</xsl:text>
              <xsl:apply-templates select="griddata" mode="data" />
              <xsl:choose>
                <xsl:when test="@appendData='true'">
                  <xsl:text>], true);</xsl:text>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:text>], false);</xsl:text>
                </xsl:otherwise>                
              </xsl:choose>
            </xsl:if>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:if>
      <xsl:apply-templates select="./controls/control">
        <xsl:sort select="@y" data-type="number" order="ascending" />
        <xsl:sort select="@x" data-type="number" order="ascending" />
        <xsl:sort select="@idx" data-type="number" order="ascending" />
      </xsl:apply-templates>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@id" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@id" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
  </xsl:template>

  <!--xsl:template match="control[@type='Ext.grid.GridPanel'] | control[@type='Ext.grid.EditorGridPanel']" mode="grid" xml:space="default">
    <xsl:apply-templates select="precode//*" />
    <xsl:variable name="remoteSort" select="@remoteSort"/>
    <xsl:variable name="id" select="@id"/>
    <xsl:if test="@render!='false'">
      <xsl:choose>
        <xsl:when test="@isInContainer='true'">
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="@name"/>
          <xsl:text>=</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:text>new </xsl:text>
      <xsl:value-of select="@type"/>
      <xsl:text>({ds:</xsl:text>
      <xsl:call-template name="GridStore" />
      <xsl:text>,cm:</xsl:text>
      <xsl:call-template name="GridColumnModel" />
      <xsl:text>,sm:new Ext.grid.</xsl:text>
      <xsl:value-of select="@SelectionModel"/>
      <xsl:text>({listeners:{</xsl:text>
      <xsl:apply-templates select="selectionModel/events//*" />
      <xsl:text>}}),</xsl:text>
      <xsl:apply-templates select="options//@*" />
      <xsl:if test="count(styles//@*) > 0">
        <xsl:if test="count(options//@*) > 0">,</xsl:if>
        <xsl:text>style:{</xsl:text>
        <xsl:apply-templates select="styles//@*" />
        <xsl:text>}</xsl:text>
      </xsl:if>
      <xsl:text>,view:new Ext.grid.</xsl:text>
      <xsl:value-of select="@viewTypeName"/>
      <xsl:text>({</xsl:text>
      <xsl:apply-templates select="view//@*" />
      <xsl:text>})</xsl:text>
      <xsl:if test="@remoteLoad='true'">
        <xsl:text>,bbar:new Ext.PagingToolbar({pageSize:25,store:Ext.StoreMgr.get('_store_</xsl:text>
        <xsl:value-of select="@id"/>
        <xsl:text>'),displayInfo:true})</xsl:text>
      </xsl:if>
      <xsl:text>,listeners:{</xsl:text>
      <xsl:apply-templates select="events//*" />
      <xsl:text>}})</xsl:text>
      <xsl:choose>
        <xsl:when test="@isInContainer='true'">
          <xsl:if test="not(position()=last())">,</xsl:if>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>;</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:if>
    <xsl:if test="@render='false'">
      <xsl:if test="@reconfigure='true'">
        <xsl:text>Ext.getCmp('</xsl:text>
        <xsl:value-of select="@id"/>
        <xsl:text>').reconfigure(</xsl:text>
        <xsl:call-template name="GridStore" />
        <xsl:text>, </xsl:text>
        <xsl:call-template name="GridColumnModel" />
        <xsl:text>);</xsl:text>
      </xsl:if>
      <xsl:choose>
        <xsl:when test="@remoteLoad='true'">
          <xsl:if test="griddata/@totalCount != '0'">
            <xsl:text>{totalCount:</xsl:text>
            <xsl:value-of select="griddata/@totalCount"/>
            <xsl:text>,results:[</xsl:text>
            <xsl:apply-templates select="griddata" mode="JSONdata">
              <xsl:with-param name="totalCount" select="griddata/@totalCount" />
            </xsl:apply-templates>
            <xsl:text>]}</xsl:text>
          </xsl:if>
        </xsl:when>
        <xsl:otherwise>
          <xsl:if test="griddata/@totalCount != '0'">
            <xsl:text>Ext.getCmp('</xsl:text>
            <xsl:value-of select="@id"/>
            <xsl:text>').store.loadData([</xsl:text>
            <xsl:apply-templates select="griddata" mode="data" />
            <xsl:text>], false);</xsl:text>
          </xsl:if>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@id" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
  </xsl:template-->

  <xsl:template name="GridStore" xml:space="default">
    <xsl:variable name="remoteSort" select="@remoteSort" />
    <xsl:variable name="id" select="@id" />
    <xsl:choose>
      <xsl:when test="@remoteLoad='true'">
        <xsl:choose>
          <xsl:when test="@groupBy!=''">
            <xsl:text>new Ext.data.GroupingStore({storeId:'_store_</xsl:text>
            <xsl:value-of select="@id" />
            <xsl:text>',</xsl:text>
            <xsl:if test="$remoteSort='true'">
              <xsl:text>remoteSort:true,</xsl:text>
            </xsl:if>
            <xsl:text>groupField:'</xsl:text>
            <xsl:value-of select="@groupBy" />
            <xsl:text>',sortInfo:{field:'</xsl:text>
            <xsl:value-of select="@groupBy" />
            <xsl:text>', direction: 'ASC'},</xsl:text>
            <xsl:text>autoLoad:{start:0,limit:25},</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>new Ext.data.Store({loadMask: Ext.get('loading'),autoLoad:{start:0,limit:25},storeId:'_store_</xsl:text>
            <xsl:value-of select="@id" />
            <xsl:text>',</xsl:text>
            <xsl:if test="$remoteSort='true'">remoteSort:true,</xsl:if>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:text>baseParams:{service:'GridDataService',method:'RequestGridData',Id:'</xsl:text>
        <xsl:value-of select="@id" />
        <xsl:text>'},</xsl:text>
        <xsl:text>proxy: new Ext.data.HttpProxy({url:'webapp/</xsl:text>
        <xsl:value-of select="@id" />
        <xsl:text>.ashx'}),reader:new Ext.data.JsonReader({id:0,totalProperty:'totalCount',root:'results'},</xsl:text>
        <xsl:text>[{name:"RI"},</xsl:text>
        <xsl:for-each select="columns//column">
          <xsl:text>{name:'</xsl:text>
          <xsl:value-of select="@name" />
          <xsl:text>',mapping:'</xsl:text>
          <xsl:value-of select="@name" />
          <xsl:text>'}</xsl:text>
          <xsl:if test="not(position()=last())">,</xsl:if>
        </xsl:for-each>
        <xsl:text>])})</xsl:text>
      </xsl:when>
      <xsl:otherwise>
        <xsl:choose>
          <xsl:when test="@groupBy!=''">
            <xsl:text>new Ext.data.GroupingStore({id:0,</xsl:text>
            <xsl:if test="$remoteSort='true'">remoteSort:true,</xsl:if>
            <xsl:text>groupField:'</xsl:text>
            <xsl:value-of select="@groupBy" />
            <xsl:text>',sortInfo:{field:'</xsl:text>
            <xsl:value-of select="@groupBy" />
            <xsl:text>', direction: 'ASC'}, reader: new Ext.data.ArrayReader({id:"RI"},[{name:"RI"},</xsl:text>
            <xsl:for-each select="columns//column">
              <xsl:text>{name:'</xsl:text>
              <xsl:value-of select="@name" />
              <xsl:text>'}</xsl:text>
              <xsl:if test="not(position()=last())">,</xsl:if>
            </xsl:for-each>
            <xsl:text>]), data:[</xsl:text>
            <xsl:apply-templates select="griddata" mode="data" />
            <xsl:text>]})</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>new Ext.data.Store({</xsl:text>
            <xsl:if test="$remoteSort='true'">remoteSort:true,</xsl:if>
            <xsl:text>reader: new Ext.data.ArrayReader({id:0},[{name:"RI"},</xsl:text>
            <xsl:for-each select="columns//column">
              <xsl:text>{name:'</xsl:text>
              <xsl:value-of select="@name" />
              <xsl:text>'}</xsl:text>
              <xsl:if test="not(position()=last())">,</xsl:if>
            </xsl:for-each>
            <xsl:text>]), data:[</xsl:text>
            <xsl:apply-templates select="griddata" mode="data" />
            <xsl:text>]})</xsl:text>
          </xsl:otherwise>
        </xsl:choose>
        <!--xsl:text>_ds.loadData(gridData);</xsl:text-->
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template match="datarow" xml:space="default" mode="data">
    <xsl:text>[</xsl:text>
    <xsl:for-each select=".//datacol">
      <xsl:value-of select="." />
      <xsl:if test="not(position()=last())">,</xsl:if>
    </xsl:for-each>
    <xsl:text>]</xsl:text>
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template match="griddata">
    <xsl:if test="@mode='JSONdata'">
      <xsl:if test="@totalCount != '0'">
        <xsl:text>{totalCount:</xsl:text>
        <xsl:value-of select="@totalCount" />
        <xsl:text>,results:[</xsl:text>
        <xsl:apply-templates select="./datarow" mode="JSONdata">
          <xsl:with-param name="totalCount" select="@totalCount" />
        </xsl:apply-templates>
        <xsl:text>]}</xsl:text>
      </xsl:if>
    </xsl:if>
  </xsl:template>

  <xsl:template match="datarow" xml:space="default" mode="JSONdata">
    <xsl:text>{</xsl:text>
    <xsl:for-each select=".//datacol">
      <xsl:value-of select="@name" />
      <xsl:text>:</xsl:text>
      <xsl:value-of select="." />
      <xsl:if test="not(position()=last())">,</xsl:if>
    </xsl:for-each>
    <xsl:text>}</xsl:text>
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template name="GridColumnModel" xml:space="default">
    <xsl:param name="gridId" />
    <xsl:param name="useExpander" />
    <xsl:text>new Ext.grid.ColumnModel({columns:[</xsl:text>
    <xsl:if test="$useExpander='true'">
      <xsl:text>expander_</xsl:text><xsl:value-of select="$gridId" /><xsl:text>,</xsl:text>
    </xsl:if>
    <xsl:text>{id:'RI',dataIndex:'RI',hidden:true,fixed:true},</xsl:text>
    <xsl:for-each select="columns//column">
      <xsl:choose>
        <xsl:when test="@type='checkBox'">
          <xsl:value-of select="@colName" />
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>{header:'</xsl:text>
          <xsl:value-of select="@header" />
          <xsl:if test="@type='checkBox'">
            <xsl:text>',xtype:'booleancolumn</xsl:text>
          </xsl:if>
          <xsl:text>',dataIndex:'</xsl:text>
          <xsl:value-of select="@name" />
          <xsl:text>',width:</xsl:text>
          <xsl:value-of select="@width" />
          <xsl:if test="@css!=''">
            <xsl:text>,css:'</xsl:text>
            <xsl:value-of select="@css" />
            <xsl:text>'</xsl:text>
          </xsl:if>
          <xsl:if test="@id!=''">
            <xsl:text>,id:'</xsl:text>
            <xsl:value-of select="@id" />
            <xsl:text>'</xsl:text>
          </xsl:if>
          <xsl:if test="@align!=''">
            <xsl:text>,align:'</xsl:text>
            <xsl:value-of select="@align" />
            <xsl:text>'</xsl:text>
          </xsl:if>
          <xsl:if test="@renderer!=''">
            <xsl:text>,renderer:</xsl:text>
            <xsl:value-of select="@renderer" />
          </xsl:if>
          <xsl:if test="@hidden!=''">
            <xsl:text>,hidden:</xsl:text>
            <xsl:value-of select="@hidden" />
          </xsl:if>
          <xsl:if test="@editable!=''">
            <xsl:text>,editable:</xsl:text>
            <xsl:value-of select="@editable" />
          </xsl:if>
          <xsl:if test="@editor!=''">
            <xsl:text>,editor:</xsl:text>
            <xsl:value-of select="@editor" />
          </xsl:if>
          <xsl:if test="@summaryType!=''">
            <xsl:text>,summaryType:'</xsl:text>
            <xsl:value-of select="@summaryType" />
            <xsl:text>'</xsl:text>
          </xsl:if>
          <xsl:if test="@summaryRenderer!=''">
            <xsl:text>,summaryRenderer:</xsl:text>
            <xsl:value-of select="@summaryRenderer" />
          </xsl:if>
          <xsl:if test="@sortable!=''">
            <xsl:text>,sortable:</xsl:text>
            <xsl:value-of select="@sortable" />
          </xsl:if>
          <xsl:if test="@hideable!=''">
            <xsl:text>,hideable:</xsl:text>
            <xsl:value-of select="@hideable" />
          </xsl:if>
          <xsl:if test="@fixed!=''">
            <xsl:text>,fixed:</xsl:text>
            <xsl:value-of select="@fixed" />
          </xsl:if>
          <xsl:if test="@tooltip!=''">
            <xsl:text>,tooltip:'</xsl:text>
            <xsl:value-of select="@tooltip" />
            <xsl:text>'</xsl:text>
          </xsl:if>
          <xsl:text>}</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:if test="not(position()=last())">,</xsl:if>
    </xsl:for-each>
    <xsl:text>],listeners:{</xsl:text>
    <xsl:apply-templates select="columns//events//*" />
    <xsl:text>}</xsl:text>
    <xsl:text>})</xsl:text>
  </xsl:template>

  <!--xsl:template match="control[@type='Ext.data.ArrayStore']" xml:space="default">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render!='false'">
      <xsl:value-of select="@name" />
      <xsl:text>=new </xsl:text>
      <xsl:value-of select="@type" />
      <xsl:text>({id:'</xsl:text>
      <xsl:value-of select="@id" />
      <xsl:text>',</xsl:text>
      <xsl:call-template name="StoreColumnModel" />
      <xsl:text>, data:[</xsl:text>
      <xsl:call-template name="StoreData" />
      <xsl:text>]});</xsl:text>
    </xsl:if>
    <xsl:if test="@render='false'">
      <xsl:text>Ext.StoreMgr.get('</xsl:text>
      <xsl:value-of select="@id" />
      <xsl:text>').loadData([</xsl:text>
      <xsl:call-template name="StoreData" />
      <xsl:text>]);</xsl:text>
    </xsl:if>
  </xsl:template-->

  <xsl:template name="StoreColumnModel" xml:space="default">
    <xsl:text>fields:[</xsl:text>
    <xsl:for-each select="columns//column">
      <xsl:text>'</xsl:text>
      <xsl:value-of select="." />
      <xsl:text>'</xsl:text>
      <xsl:if test="not(position()=last())">,</xsl:if>
    </xsl:for-each>
    <xsl:text>]</xsl:text>
  </xsl:template>

  <xsl:template name="StoreData" xml:space="default">
    <xsl:for-each select="data//datanode">
      <xsl:value-of select="." />
      <xsl:if test="not(position()=last())">,</xsl:if>
    </xsl:for-each>
  </xsl:template>

  <xsl:template match="view//@*" xml:space="default">
    <xsl:value-of select="local-name()" />
    <xsl:text>:</xsl:text>
    <xsl:value-of select="." />
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template match="control[@type='NetJsWire.ComboBox']" xml:space="default">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render!='false'">
      <xsl:choose>
        <xsl:when test="@isInContainer='true'"></xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="@name" />
          <xsl:text>=</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:text>new </xsl:text>
      <xsl:value-of select="@type" />
      <xsl:text>('</xsl:text>
      <xsl:value-of select="@name" />
      <xsl:text>',{</xsl:text>
      <xsl:apply-templates select="options//@*" />
      <xsl:if test="count(styles//@*) > 0">
        <xsl:choose>
          <xsl:when test="@isInContainer='true'"></xsl:when>
          <xsl:otherwise>
            <xsl:if test="count(options//@*) > 0">,</xsl:if>
            <xsl:text>style:{</xsl:text>
            <xsl:apply-templates select="styles//@*" />
            <xsl:text>}</xsl:text>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:if>
      <xsl:text>,data:</xsl:text>
      <xsl:text>[</xsl:text>
      <xsl:apply-templates select="data//*" mode="datos" />
      <xsl:text>]</xsl:text>
      <xsl:if test="count(./events/*) > 0">
        <xsl:text>,listeners:{</xsl:text>
        <xsl:apply-templates select="events" />
        <xsl:text>}</xsl:text>
      </xsl:if>
      <xsl:text>})</xsl:text>
      <xsl:choose>
        <xsl:when test="@isInContainer='true'">
          <xsl:text>,</xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>;</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:if>
    <xsl:if test="not(@render='true') and @loadData='true'">
      <xsl:text>Ext.getCmp('</xsl:text>
      <xsl:value-of select="@id" />
      <xsl:text>').store.loadData([</xsl:text>
      <xsl:for-each select="data//chunk">
        <xsl:text>[</xsl:text>
        <xsl:value-of select="." />
        <xsl:text>]</xsl:text>
        <xsl:if test="not(position()=last())">,</xsl:if>
      </xsl:for-each>
      <xsl:text>]);</xsl:text>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@id" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@id" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
  </xsl:template>

  <!--xsl:template match="control[@type='Ext.TabPanel']" xml:space="default">
    <xsl:apply-templates select="precode//*" />
    <xsl:variable name="name" select="@name"/>
    <xsl:if test="@render!='false'">
      <xsl:text>new </xsl:text>
      <xsl:value-of select="@type"/>
      <xsl:text>({</xsl:text>
      <xsl:apply-templates select="options//@*" />
      <xsl:if test="count(styles//@*) > 0">
        <xsl:if test="count(options//@*) > 0">,</xsl:if>
        <xsl:text>style:{</xsl:text>
        <xsl:apply-templates select="styles//@*" />
        <xsl:text>}</xsl:text>
      </xsl:if>
      <xsl:text>,items:[</xsl:text>
      <xsl:for-each select="pages//page">
        <xsl:text>{id:'</xsl:text>
        <xsl:value-of select="@name"/>
        <xsl:text>',title:'</xsl:text>
        <xsl:value-of select="@text"/>
        <xsl:text>'</xsl:text>
        <xsl:if test="@toolTip!=''">
          <xsl:text>,tabTip:'</xsl:text>
          <xsl:value-of select="@toolTip"/>
          <xsl:text>'</xsl:text>
        </xsl:if>
        <xsl:choose>
          <xsl:when test="@layout!=''">
            <xsl:text>,layout:'</xsl:text>
            <xsl:value-of select="@layout"/>
            <xsl:text>',style:{width:'100%',height:'100%'}</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>,layout:'absolute',style:{width:'100%',height:'100%'}</xsl:text>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:if test="@closable!=''">
          <xsl:text>,closable:</xsl:text>
          <xsl:value-of select="@closable"/>
        </xsl:if>
        <xsl:text>}</xsl:text>
        <xsl:if test="not(position()=last())">,</xsl:if>
      </xsl:for-each>
      <xsl:text>]})</xsl:text>
    </xsl:if>
    <xsl:if test="@render='false'">
      <xsl:for-each select="pages//page">
        <xsl:value-of select="$name"/>.<xsl:value-of select="@name"/> = <xsl:value-of select="$name"/>.add({id:'<xsl:value-of select="@name"/>',title: '<xsl:value-of select="@text"/>'<xsl:if test="@toolTip!=''">
          ,tabTip:'<xsl:value-of select="@toolTip"/>'
        </xsl:if>
        <xsl:choose>
          <xsl:when test="@layout!=''">
            <xsl:text>,layout:'</xsl:text>
            <xsl:value-of select="@layout"/>
            <xsl:text>',style:{width:'100%',height:'100%'}</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>,layout:'absolute',style:{width:'100%',height:'100%'}</xsl:text>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:if test="@closable!=''">
          <xsl:text>,closable:</xsl:text>
          <xsl:value-of select="@closable"/>
        </xsl:if>
        <xsl:text>});</xsl:text>
        <xsl:value-of select="$name"/>.<xsl:value-of select="@name"/><xsl:text>.show();</xsl:text>
      </xsl:for-each>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
    <xsl:apply-templates select="events//*" />
  </xsl:template-->

  <xsl:template match="control[@type='Ext.menu.Separator']">
    <xsl:text>'-'</xsl:text>
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <!--xsl:template match="control[@type='Ext.Toolbar.Button']">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render='true'">
      <xsl:if test ="@hasItems='true'">
        <xsl:value-of select="@name"/>
        <xsl:text>_Menu=new Ext.menu.Menu({id:'</xsl:text>
        <xsl:value-of select="@name"/>
        <xsl:text>_Menu'});</xsl:text>
      </xsl:if>
      <xsl:text>{xtype:'button',</xsl:text>
      <xsl:apply-templates select="options//@*" />
      <xsl:if test ="@hasItems='true'">
        <xsl:text>,menu:</xsl:text>
        <xsl:value-of select="@name"/>
        <xsl:text>_Menu</xsl:text>
      </xsl:if>
      <xsl:text>}</xsl:text>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
    <xsl:apply-templates select="events//*" />
  </xsl:template-->

  <!--xsl:template match="control[@type='Ext.menu.Item'] | control[@type='Ext.menu.CheckItem']">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render='true'">
      <xsl:if test ="@hasItems='true'">
        <xsl:value-of select="@name"/>
        <xsl:text>_Menu=new Ext.menu.Menu({id:'</xsl:text>
        <xsl:value-of select="@name"/>
        <xsl:text>_Menu'});</xsl:text>
      </xsl:if>
      <xsl:value-of select="@name"/>
      <xsl:text>=</xsl:text>
      <xsl:value-of select="@menu"/>
      <xsl:text>.add(new </xsl:text>
      <xsl:value-of select="@type"/>
      <xsl:text>({</xsl:text>
      <xsl:apply-templates select="options//@*" />
      <xsl:if test ="@hasItems='true'">
        <xsl:text>,menu:</xsl:text>
        <xsl:value-of select="@name"/>
        <xsl:text>_Menu</xsl:text>
      </xsl:if>
      <xsl:text>}));</xsl:text>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
    <xsl:apply-templates select="events//*" />
  </xsl:template-->

  <!--xsl:template match="control[@type='Ext.menu.ColorMenu']">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render='true'">
      <xsl:value-of select="@name"/>
      <xsl:text>=new </xsl:text>
      <xsl:value-of select="@type"/>
      <xsl:text>();</xsl:text>
      <xsl:value-of select="@menu"/>
      <xsl:text>.add(new Ext.menu.Item({</xsl:text>
      <xsl:apply-templates select="options//@*" />
      <xsl:text>,menu:</xsl:text>
      <xsl:value-of select="@name"/>
      <xsl:text>}));</xsl:text>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
    <xsl:apply-templates select="events//*" />
  </xsl:template-->

  <xsl:template match="control[@type='Ext.tree.TreePanel']">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render='true'">
      <xsl:variable name="name" select="@name" />
      <xsl:text>
        var _divEltmp=Ext.DomHelper.append(
      </xsl:text>
      <xsl:value-of select="@parent" />
      <xsl:text>,{tag:'div',style:{</xsl:text>
      <xsl:apply-templates select="styles//@*" />
      <xsl:text>}});</xsl:text>
      <xsl:value-of select="@name" />
      <xsl:text>=new</xsl:text>
      <xsl:value-of select="@type" />
      <xsl:text>
        ({frame:true,el:_divEltmp,
      </xsl:text>
      <xsl:apply-templates select="options//@*" />
      <xsl:text>});</xsl:text>
      <xsl:text>var _rootNode;</xsl:text>
      <xsl:for-each select="nodes//node">
        <xsl:choose>
          <xsl:when test="@root='true'">
            <xsl:text>
              _rootNode=new Ext.tree.TreeNode({text:'
            </xsl:text>
            <xsl:value-of select="@text" />
            <xsl:text>',id:'</xsl:text>
            <xsl:value-of select="@name" />
            <xsl:text>',draggable:false</xsl:text>
            <xsl:if test="@qtip!=''">
              <xsl:text>,qtip:'</xsl:text>
              <xsl:value-of select="@qtip" />
              <xsl:text>'</xsl:text>
            </xsl:if>
            <xsl:if test="@qtipCfg!=''">
              <xsl:text>,qtipCfg:</xsl:text>
              <xsl:value-of select="@qtipCfg" />
            </xsl:if>
            <xsl:text>});</xsl:text>
          </xsl:when>
          <xsl:when test="@parent != ''">
            <xsl:text>var</xsl:text>
            <xsl:value-of select="@name" />
            <xsl:text>=</xsl:text>
            <xsl:value-of select="@parent" />
            <xsl:text>
              .appendChild(new Ext.tree.TreeNode({ text:'
            </xsl:text>
            <xsl:value-of select="@text" />
            <xsl:text>', id:'</xsl:text>
            <xsl:value-of select="@name" />
            <xsl:text>'</xsl:text>
            <xsl:if test="@qtip!=''">
              <xsl:text>,qtip:'</xsl:text>
              <xsl:value-of select="@qtip" />
              <xsl:text>'</xsl:text>
            </xsl:if>
            <xsl:if test="@qtipCfg!=''">
              <xsl:text>,qtipCfg:</xsl:text>
              <xsl:value-of select="@qtipCfg" />
            </xsl:if>
            <xsl:text>}));</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:text>var</xsl:text>
            <xsl:value-of select="@name" />
            <xsl:text>
              = _rootNode.appendChild(new Ext.tree.TreeNode({ text:'
            </xsl:text>
            <xsl:value-of select="@text" />
            <xsl:text>', id:'</xsl:text>
            <xsl:value-of select="@name" />
            <xsl:text>'</xsl:text>
            <xsl:if test="@qtip!=''">
              <xsl:text>,qtip:'</xsl:text>
              <xsl:value-of select="@qtip" />
              <xsl:text>'</xsl:text>
            </xsl:if>
            <xsl:if test="@qtipCfg!=''">
              <xsl:text>,qtipCfg:</xsl:text>
              <xsl:value-of select="@qtipCfg" />
            </xsl:if>
            <xsl:text>}));</xsl:text>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:for-each>
      <xsl:value-of select="@name" />
      <xsl:text>
        .setRootNode(_rootNode);
      </xsl:text>
      <xsl:value-of select="@name" />
      <xsl:text>.render();</xsl:text>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
    <xsl:apply-templates select="events//*" />
  </xsl:template>

  <!--xsl:template match="control[@type='Ext.Panel']" xml:space="default">
    <xsl:apply-templates select="precode//*" />
    <xsl:if test="@render='true'">
      <xsl:choose>
        <xsl:when test="@isLayout='true'">
          <xsl:value-of select="@name"/> = new <xsl:value-of select="@type"/>
          <xsl:text>({</xsl:text>
          <xsl:apply-templates select="options//@*" />
          <xsl:if test="count(styles//@*) > 0">
            <xsl:if test="count(options//@*) > 0">,</xsl:if>
            <xsl:text>style:{</xsl:text>
            <xsl:apply-templates select="styles//@*" />
            <xsl:text>}</xsl:text>
          </xsl:if>
          <xsl:text>,items:[</xsl:text>
          <xsl:for-each select="items//item">
            <xsl:text>new </xsl:text>
            <xsl:value-of select="@type"/>
            <xsl:text>({id:'</xsl:text>
            <xsl:value-of select="@name"/>
            <xsl:text>',region:'</xsl:text>
            <xsl:value-of select="@region"/>
            <xsl:text>',title:'</xsl:text>
            <xsl:value-of select="@title"/>
            <xsl:text>',width:</xsl:text>
            <xsl:value-of select="@width"/>
            <xsl:text>,height:</xsl:text>
            <xsl:value-of select="@height"/>
            <xsl:text>,collapsible:</xsl:text>
            <xsl:value-of select="@collapsible"/>
            <xsl:text>,split:</xsl:text>
            <xsl:value-of select="@split"/>
            <xsl:text>,layout:'</xsl:text>
            <xsl:value-of select="@layout"/>
            <xsl:text>',useIFrame:</xsl:text>
            <xsl:value-of select="@useIframe"/>
            <xsl:text>,url:'</xsl:text>
            <xsl:value-of select="@url"/>
            <xsl:text>'})</xsl:text>
            <xsl:if test="not(position()=last())">,</xsl:if>
          </xsl:for-each>
          <xsl:text>]});</xsl:text>
          <xsl:for-each select="items//item">
            <xsl:value-of select="@name"/>
            <xsl:text>=Ext.getCmp('</xsl:text>
            <xsl:value-of select="@name"/>
            <xsl:text>');</xsl:text>
          </xsl:for-each>
        </xsl:when>
        <xsl:otherwise>
          <xsl:choose>
            <xsl:when test="@useIframe='true'">
              <xsl:value-of select="@name"/> = new NetJsWire.Panel('<xsl:value-of select="@name"/>', {
              <xsl:apply-templates select="options//@*" />
              <xsl:if test="count(styles//@*) > 0">
                <xsl:if test="count(options//@*) > 0">,</xsl:if>
                <xsl:text>style:{</xsl:text>
                <xsl:apply-templates select="styles//@*" />
                <xsl:text>}</xsl:text>
              </xsl:if>
              ,url:'<xsl:value-of select="@url"/>
              <xsl:text>',useIFrame:true });</xsl:text>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="@name"/> = new <xsl:value-of select="@type"/>({
              <xsl:apply-templates select="options//@*" />
              <xsl:if test="count(styles//@*) > 0">
                <xsl:if test="count(options//@*) > 0">,</xsl:if>
                <xsl:text>style:{</xsl:text>
                <xsl:apply-templates select="styles//@*" />
                <xsl:text>}</xsl:text>
              </xsl:if>
              <xsl:text>});</xsl:text>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:if test="@isInLayout='true'">
        <xsl:value-of select="@parent"/>.add(<xsl:value-of select="@name"/><xsl:text>);</xsl:text>
        <xsl:value-of select="@parent"/><xsl:text>.doLayout();</xsl:text>
      </xsl:if>
      <xsl:value-of select="@name"/>
      <xsl:text>.syncSize();</xsl:text>
    </xsl:if>
    <xsl:apply-templates select="propertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="equalpropertys//*">
      <xsl:with-param name="controlName" select="@name" />
    </xsl:apply-templates>
    <xsl:apply-templates select="code//*" />
    <xsl:apply-templates select="events//*" />
  </xsl:template-->

  <xsl:template match="options//@*" xml:space="default">
    <xsl:value-of select="local-name()" />
    <xsl:text>:</xsl:text>
    <xsl:value-of select="." />
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template match="layoutConfig//@*" xml:space="default">
    <xsl:value-of select="local-name()" />
    <xsl:text>:'</xsl:text>
    <xsl:value-of select="." />
    <xsl:text>'</xsl:text>
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template match="styles//@*" xml:space="default">
    <xsl:value-of select="local-name()" />
    <xsl:text>:</xsl:text>
    <xsl:value-of select="." />
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template match="codeline" xml:space="default">
    <xsl:value-of select="." />
  </xsl:template>

  <xsl:template match="data//chunk" mode="datos" xml:space="default">
    <xsl:text>[</xsl:text>
    <xsl:value-of select="." />
    <xsl:text>]</xsl:text>
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template match="event" xml:space="default">
    <xsl:if test=". != ''">
      <xsl:value-of select="@name" />
      <xsl:text>:</xsl:text>
      <xsl:value-of select="." />
      <xsl:if test="not(position()=last())">,</xsl:if>
    </xsl:if>
  </xsl:template>

  <xsl:template match="property" xml:space="default">
    <xsl:param name="controlName" />
    <xsl:text>Ext.getCmp('</xsl:text>
    <xsl:value-of select="$controlName" />
    <xsl:text>').</xsl:text>
    <xsl:value-of select="@name" />
    <xsl:text>(</xsl:text>
    <xsl:if test="@type='string'">'</xsl:if>
    <xsl:value-of select="@value" />
    <xsl:if test="@type='string'">'</xsl:if>
    <xsl:text>);</xsl:text>
  </xsl:template>

  <xsl:template match="equalproperty" xml:space="default">
    <xsl:param name="controlName" />
    <xsl:text>Ext.getCmp('</xsl:text>
    <xsl:value-of select="$controlName" />
    <xsl:text>').</xsl:text>
    <xsl:value-of select="@name" />
    <xsl:text>=</xsl:text>
    <xsl:if test="@type='string'">'</xsl:if>
    <xsl:value-of select="@value" />
    <xsl:if test="@type='string'">'</xsl:if>
    <xsl:text>;</xsl:text>
  </xsl:template>

  <xsl:template match="items//@*" xml:space="default">
    <xsl:text>{</xsl:text>
    <xsl:value-of select="." />
    <xsl:text>}</xsl:text>
    <xsl:if test="not(position()=last())">,</xsl:if>
  </xsl:template>

  <xsl:template match="buttons" xml:space="default">
    <xsl:apply-templates select="control//*" />
  </xsl:template>
</xsl:stylesheet>